package com.ruoyi.system.mc.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.ruoyi.common.utils.StringUtils;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.*;
/*
 *  @author 雨安
 *  类名： McProduct
 *  创建时间：2024/5/25  商品表 继承每个表都有的默认实体类
 */
@Data//getter + setter + toString
@AllArgsConstructor//有参构造方法
@NoArgsConstructor//无参构造方法
@TableName("mc_product")//表名 商品表
public class McProduct extends BaseEntity{

    @TableId(type = IdType.AUTO)
    private Long productId; // 商品ID

    private String productName; // 商品名称

    private String productEnName; // 商品英文名称

    private Integer collectCount; // 商品被收藏次数

    private Integer salesQuantity; // 商品销量

    private Double productPrice; // 商品价格，原价

    private String productDescription; // 商品描述

    private String productType; // 商品类型，如数码、工具等

    private Long userId; // 商户id，来自login_user表主键

    private Boolean expressStatus; // 是否支持快递送货

    private Boolean takeoutStatus; // 是否支持外卖

    private Double muchFreeShippingIsFull; // 满多少包邮

    private Boolean availableForSale; // 商户自定义该商品是否可售

    private String remark; // 备注

    private String productAdminImg;//商品首图

    //之后查询出来的来自订单表
//    private Integer product_rating; //商品评分

    //获取条件构造器
    public LambdaQueryWrapper<McProduct> getLambdaQueryWrapper(McProduct mcProduct){
        //返回条件构造器
        return new LambdaQueryWrapper<McProduct>()
                //判断ID不为 null 则用 = 查询
                .eq(Objects.nonNull(mcProduct.getProductId()),McProduct::getProductId,mcProduct.getProductId())
                //判断商品名称不为 null 则用 like 模糊查询
                .like(StringUtils.isNotBlank(mcProduct.getProductName()),McProduct::getProductName,mcProduct.getProductName())
                //判断商品英文名不为 null 则用 like 模糊查询
                .like(StringUtils.isNotBlank(mcProduct.getProductEnName()),McProduct::getProductEnName,mcProduct.getProductEnName())
                //判断是否支持快递
                .eq(Objects.nonNull(mcProduct.getExpressStatus()),McProduct::getExpressStatus,mcProduct.getExpressStatus())
                //判断满多少包邮
                .lt(Objects.nonNull(mcProduct.getMuchFreeShippingIsFull()),McProduct::getMuchFreeShippingIsFull,mcProduct.getMuchFreeShippingIsFull())
                //判断商品是否可售 预售 和 可售
                .eq(Objects.nonNull(mcProduct.getAvailableForSale()),McProduct::getAvailableForSale,mcProduct.getAvailableForSale())
                //判断逻辑删除
                .eq(McProduct::getDeleteFlag,Boolean.FALSE);
    }
}
